#ifndef P_NODE_H
#define P_NODE_H

#include "PUUID.h"

namespace Piccolo
{
    class PNode
    {
    public:
        PNode() = default;
        virtual ~PNode() = default;

        PUUID GetId() const;
        void SetId(const PUUID& nodeId);
        const std::string& GetName() const;
        void SetName(const std::string& name);

        const std::vector<PNode*>& GetChildren() const;
        bool HasParent();
        bool HasChildren();
        void SetParent(PNode* node);
        PNode* GetParent() const;
        void AddChild(PNode* node);
        void RemoveChild(PNode* node);

    private:
        PUUID mId = 0;
        std::string mName;
        PNode* mParent = nullptr;
        std::vector<PNode*> mChildren;
    };
}

#endif